Microprocessors are used in embedded systems in order to perform calculations for processes. In embedded systems with real-time requirements, for example control systems, processes are assigned recurring time spans for calculation by the microprocessor. The length of the recurring time spans is preferably constant. The time spans repeat, for example, adjacently to one another in time. The time spans can also repeat with a preferably constant time interval from one another.
Processes can encompass a plurality of tasks that can be executed by way of the microprocessor. The microprocessor can at least partly execute one task or several tasks in one time span. A control program, which is referred to hereinafter as a “scheduler,” assigns to various tasks of a process or to various tasks of different processes, by way of a schedule, a computation time on the microprocessor for performing the respective task. The schedule is a procedural plan that allocates to the respective tasks respective starting times, and optionally ending times, for execution.
Embedded systems can also be constructed as multiple-core computer systems. In this case a microprocessor of a multiple-core computer system encompasses two or more computation cores. A core allocation is specified in the schedule for the multiple-core computer system. The core allocation specifies in the schedule which task is performed on which of the computation cores.
The schedule is executed by the scheduler with the aid of a previously specified scheduling algorithm. After completion of the schedule, the sequence can if applicable start again from the beginning.
If static or dynamic dependences exist between tasks, the latter can be handled, for example sequentially, on one computation core. Performance of the corresponding calculations is thereby limited to a previously specified computation core.
Tasks can also be distributed by the scheduler to the various computation cores dynamically, i.e., only at runtime. Dynamically changing dependences between various tasks are activated in this context, for example, in event-controlled fashion. After activation, the sequence of distribution of the computation time is selected, by corresponding scheduling at runtime, in such a way that tasks which depend on the result of calculations in other tasks are the first to receive computation time. No consideration is given here, however, to real-time aspects, for example time limits for executing a specific task.
A real-time system must guarantee that a task is executed within a predefined time span. For “hard” real-time requirements, this is guaranteed in 100% of all cases.
Improved execution control in real-time systems is therefore desirable.